<?php

class Carrinho extends MY_Controller {


    function __construct()
    {
	parent::__construct();
    }

    public function add()
    {
	$this->form_validation->set_error_delimiters('<strong>', '</strong><br />');

	// indicando as regras de validação do cadastro
	$this->form_validation->set_rules('lote', 'lote', 'required|callback_check_disponivel[1]');


	if ($this->form_validation->run() == FALSE)
	{
	    $this->load->view('common/header', array('tipo_usuario' => $this->tipo_usuario));
	    $this->load->view('updatecarrinhoview');
	    $this->load->view('common/footer');
	    
	}
	else
	{
	    $lote = new Lote_model($this->input->post('lote'), TRUE);

	    $nome_no_carrinho = replace_accents($lote->get_evento()->get_nome() .' - '.$lote->get_nome());
	    $data = array(
		'id'      => $lote->get_id(),
		'qty'     => 1,
		'price'   => $lote->get_preco(),
		'name'    => $nome_no_carrinho
            );

	    $row_id = $this->cart->insert($data);


	    if($row_id != FALSE) // inseriu no carrinho
	    {
		$this->load->view('common/header', array('tipo_usuario' => $this->tipo_usuario));
		
		$this->load->view('updatecarrinhoview');
		$this->load->view('common/footer');
	    }
	    else
	    {
		$data = array('erro' => '<strong>Ocorreu um erro ao inserir no carrinho.</strong>');
		
		$this->load->view('common/header', array('tipo_usuario' => $this->tipo_usuario));
		$this->load->view('updatecarrinhoview', array('dados' => $data));
		$this->load->view('common/footer');
		
	    }
	}
    }

    function update()
    {
	$rows = $this->input->post('rowid');
	$qtds = $this->input->post('qty');
	$this->form_validation->set_error_delimiters('<strong>', '</strong><br />');

	$rows = $rows == FALSE ? array() : $rows;
	$qtds = $qtds == FALSE ? array() : $qtds;

	for ($i = 1; $i <= count($rows); $i++)
	{
	    $this->form_validation->set_rules("qty[$i]", 'quantidade',
			"required|greater_than[-1]|less_than[16]|callback_check_disponivel[{$rows[$i]}]");
	}


	if ($this->form_validation->run() == FALSE)
	{
	    $this->load->view('common/header', array('tipo_usuario' => $this->tipo_usuario));
	    $this->load->view('updatecarrinhoview');
	    $this->load->view('common/footer');
	}
	else
	{
	    $data = array();
	    for ($i = 1; $i <= count($rows); $i++)
	    {
		$data[] = array(
			    'rowid' => $rows[$i],
			    'qty'   => $qtds[$i]
		);
	    }
	    
	    $this->cart->update($data);

	    $this->load->view('common/header', array('tipo_usuario' => $this->tipo_usuario));
	    $this->load->view('updatecarrinhoview');
	    $this->load->view('common/footer');
	}
    }

    public function fechar_compra()
    {
	$this->form_validation->set_error_delimiters('<strong>', '</strong><br />');

	// indicando as regras de validação do cadastro
	$this->form_validation->set_rules('bandeira', 'bandeira', 'trim|required|greater_than[0]');
	$this->form_validation->set_rules('nro_cartao', 'número do cartão', 'trim|required|exact_length[16]');
	$this->form_validation->set_rules('cod_seguranca', 'código de segurança', 'trim|required|exact_length[3]');
	$this->form_validation->set_rules('nro_parcelas', 'senha', 'required|greater_than[0]|less_than[13]');


	if ($this->autentica() == FALSE)
	{
	    $this->session->set_flashdata('pagina', 'carrinho/fechar_compra');
	    redirect('carrinho/login');
	}
	else
	{
	    $this->load->model('usuario_model');
	    $id = $this->usuario_model->get_id_by_email($this->session->userdata('email'));
	    $tipo_usuario = $this->usuario_model->tipo_de_usuario($id);

	    if ($tipo_usuario != 'cliente')
	    {
		die('Voce nao tem permissoes para comprar ingresso!');
	    }

	    if ($this->form_validation->run() == FALSE)
	    {
		$this->load->view('common/header', array('tipo_usuario' => $this->tipo_usuario));
		$this->load->view('fecharcompraview');
		$this->load->view('common/footer');
	    }
	    else
	    {
		$dados_pagamento = new stdClass();
		$dados_pagamento->nro_cartao	= $this->input->post('nro_cartao');
		$dados_pagamento->bandeira	= $this->input->post('bandeira');
		$dados_pagamento->cod_seguranca = $this->input->post('cod_seguranca');
		$dados_pagamento->nro_parcelas	= $this->input->post('nro_parcelas');

		
		$this->load->model('usuario_model');
		$cliente = $this->usuario_model->instancia_tipo_de_usuario($id);
		$confirma = $cliente->fechar_compra($dados_pagamento);

		if ($confirma == TRUE)
		{
//		    $this->cart->destroy();
		    $this->load->view('compraokview');
		}
		else
		{
		    $this->load->view('compraerroview');
		}
	    }
	}
	
	
    }

    public function check_disponivel($qtd, $row_id)
    {
	require_once APPPATH . 'models/lote_model.php';

	if ($this->input->post('lote') != FALSE)
	{
	    $lote = new Lote_model($this->input->post('lote'));
	}
	else
	{
	    $arr_items = $this->cart->contents();
	    $lote = new Lote_model($arr_items[$row_id]['id']);
	}

	if ( $lote->quantos_ingressos_disponiveis() >= $qtd )
	{
	    return TRUE;
	}
	else
	{
	    $this->form_validation->set_message('check_disponivel', 'Nao ha ingressos disponiveis nesta quantidade');
	    return FALSE;
	}
    }
}

?>